package com.lanhai.utils;

import java.util.List;
import java.util.Map;

import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.control.Label;
import javafx.scene.layout.Border;
import javafx.scene.layout.BorderStroke;
import javafx.scene.layout.BorderStrokeStyle;
import javafx.scene.layout.BorderWidths;
import javafx.scene.layout.CornerRadii;
import javafx.scene.layout.HBox;
import javafx.scene.paint.Color;

/**
 * 自定义agv列表单元
 *
 * @author 徐武斌
 *
 */
public class MyHBox extends HBox {

	/**
	 * 新增元素
	 *
	 * @param maxWidth
	 *            本元素最大尺寸
	 * @param count
	 *            元素长度
	 * @param agvIds
	 *            元素列表
	 */
	public MyHBox(double maxWidth, List<Map<String, String>> nodes, String bgColor, boolean borderFlag,
			String borderColor) {

		// 设置间距
		//setPadding(new Insets(5));
		// 设置背景
		if(!(bgColor == null || bgColor.equals(""))){
			setStyle("-fx-background-color:" + bgColor);
		}		
		BorderWidths bw = new BorderWidths(1, 0, 0, 1, false, false, false, false);
		BorderStroke bs = new BorderStroke(Color.valueOf(borderColor), BorderStrokeStyle.SOLID, CornerRadii.EMPTY, bw);
		
		/*
		 * 设置子项
		 */
		// 设置间距
		int max = nodes.size() - 1;
		for (int i = 0; i < nodes.size(); i++) {
			// 获取元素
			Label label = new Label("0");
			// 字体居中
			label.setAlignment(Pos.CENTER);
			if(borderFlag){
				if(i == max){
					BorderWidths bw1 = new BorderWidths(1, 1, 0, 1, false, false, false, false);
					BorderStroke bs1 = new BorderStroke(Color.valueOf(borderColor), BorderStrokeStyle.SOLID, CornerRadii.EMPTY, bw1);			
					label.setBorder(new Border(bs1));
				}else{
					label.setBorder(new Border(bs));
				}				
			}
			// 设置宽度
			//label.setPrefWidth(maxWidth / nodes.size());
			String ws = nodes.get(i).get("width")==null? "0":nodes.get(i).get("width");
			double d = Double.parseDouble(ws);
			if(d>0.0){
				label.setPrefWidth(Double.parseDouble(ws));
			}
			label.setPrefHeight(20.0);
			label.setText(nodes.get(i).get("val"));
			label.setPadding(new Insets(5));
			String color = nodes.get(i).get("color");
			if(color != null){
				label.setStyle("-fx-background-color:" + color);
			}
			// System.out.println("元素尺寸:" +
			// label.getBoundsInParent().toString());
			this.getChildren().add(label);
		}
	}	
	
}